數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)可用以下四種基本存儲(chǔ)方法得到:
(1)順序存儲(chǔ)方法
該方法把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置上相鄰的存儲(chǔ)單元里,結(jié)點(diǎn)間的邏輯關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來(lái)體現(xiàn)。
由此得到的存儲(chǔ)表示稱為順序存儲(chǔ)結(jié)構(gòu)(Sequential Storage Structure ),通常借助程序語(yǔ)言的數(shù)組描述。
該方法主要應(yīng)用于線性的數(shù)據(jù)結(jié)構(gòu)。非線性的數(shù)據(jù)結(jié)構(gòu)也可通過(guò)某種線性化的方法實(shí)現(xiàn)順序存儲(chǔ)。
(2)鏈接存儲(chǔ)方法
該方法不要求邏輯上相鄰的結(jié)點(diǎn)在物理位置上亦相鄰,結(jié)點(diǎn)間的邏輯關(guān)系由附加的指針字段表示。由此得到的存儲(chǔ)表示稱為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)(Linked Storage Structure), 通常借助于程序語(yǔ)言的指針類型描述。
(3)索引存儲(chǔ)方法
該方法通常在儲(chǔ)存結(jié)點(diǎn)信息的同時(shí),還建立附加的索引表。索引表由若干索引項(xiàng)組成。若每個(gè)結(jié)點(diǎn)在索引表中都有一個(gè)索引項(xiàng),則該索引表稱之為稠密索引(Dense Index )。若一組結(jié)點(diǎn)在索引表中只對(duì)應(yīng)一個(gè)索引項(xiàng),則該索引表稱為稀疏索引(Spare Index)。索引項(xiàng)的一般形式是:關(guān)鍵字、地址。
關(guān)鍵字是能唯一標(biāo)識(shí)一個(gè)結(jié)點(diǎn)的那些數(shù)據(jù)項(xiàng)。稠密索引中索引項(xiàng)的地址指示結(jié)點(diǎn)所在的存儲(chǔ)位置;稀疏索引中索引項(xiàng)的地址指示一組結(jié)點(diǎn)的起始存儲(chǔ)位置。
(4)散列存儲(chǔ)方法
該方法的基本思想是:根據(jù)結(jié)點(diǎn)的關(guān)鍵字直接計(jì)算出該結(jié)點(diǎn)的存儲(chǔ)地址。
四種基本存儲(chǔ)方法,既可單獨(dú)使用,也可組合起來(lái)對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)映像。
同一邏輯結(jié)構(gòu)采用不同的存儲(chǔ)方法,可以得到不同的存儲(chǔ)結(jié)構(gòu)。選擇何種存儲(chǔ)結(jié)構(gòu)來(lái)表示相應(yīng)的邏輯結(jié)構(gòu),視具體要求而定,主要考慮運(yùn)算方便及算法的時(shí)空要求。
數(shù)據(jù)結(jié)構(gòu)三方面的關(guān)系
數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)及數(shù)據(jù)的運(yùn)算這三方面是一個(gè)整體。孤立地去理解一個(gè)方面,而不注意它們之間的聯(lián)系是不可取的。 存儲(chǔ)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)不可或缺的一個(gè)方面:同一邏輯結(jié)構(gòu)的不同存儲(chǔ)結(jié)構(gòu)可冠以不同的數(shù)據(jù)結(jié)構(gòu)名稱來(lái)標(biāo)識(shí)。